<?php
namespace app\admin\controller;

use think\Controller;
use think\Loader;

/**
 * Class Qrcode
 * @package app\admin\controller    php生成二维码
 */
class QrCode extends Controller
{
    /*
     * 生成带logo的二维码图片
     * @param string $path 保存的二维码地址
     * @param string $logo logo图片地址
     * @param int $level 二维码容错级别 L 7%  M 15%  Q 25%  H 30%
     * @param int $size 需要生成的图片大小、每个像素点大小
     */
    public function create($path , $logo , $level = 7,$size = 8)
    {
        if (!file_exists($path)){
            //引入qrcode类
            Loader::import('phpqrcode.phpqrcode',EXTEND_PATH);
            //容错级别
            $errorCorrectionLevel = intval($level);
            //生成图片大小
            $matrixPointSize = intval($size);
            //二维码内容字符串
            $text = "任意内容";
            //生成二维码图片
            $object = new \QRcode();
            //生成的二维码保存路径
            $path = ROOT_PATH . 'public/static/new_qrcode.png';
            //第二个参数false的意思是不生成图片文件，如果你写上‘picture.png’则会在根目录下生成一个png格式的图片文件
            $object->png($text, $path, $errorCorrectionLevel, $matrixPointSize, 2);
            //准备好的logo图片
            $logo = ROOT_PATH . "public/static/logo.jpg";
            //logo图片存在并且已生成二维码
            if (file_exists($logo)) {
                $qrcode = imagecreatefromstring(file_get_contents($path));
                $logo = imagecreatefromstring(file_get_contents($logo));
                $qrcode_width = imagesx($qrcode);   //二维码图片宽度
                $qrcode_height = imagesy($qrcode);  //二维码图片高度
                $logo_width = imagesx($logo);       //logo图片宽度
                $logo_height = imagesy($logo);      //logo图片高度
                $logo_qr_width = $qrcode_width / 5;
                $scale = $logo_width / $logo_qr_width;
                $logo_qr_height = $logo_height / $scale;
                $from_width = ($qrcode_width - $logo_qr_width) / 2;
                //重新组合图片并调整大小[生成中间带logo的二维码]
                //bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
                //$dst_image：新建的图片
                //$src_image：需要载入的图片
                //$dst_x：设定需要载入的图片在新图中的x坐标
                //$dst_y：设定需要载入的图片在新图中的y坐标
                //$src_x：设定载入图片要载入的区域x坐标
                //$src_y：设定载入图片要载入的区域y坐标
                //$dst_w：设定载入的原图的宽度（在此设置缩放）
                //$dst_h：设定载入的原图的高度（在此设置缩放）
                //$src_w：原图要载入的宽度
                //$src_h：原图要载入的高度
                imagecopyresampled($qrcode, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
                //保存图片到原二维码地址上进行替换
                imagepng($qrcode, $path);
            }
        }
    }
}